package lin

import (
	"net/http"
	"strconv"
	"time"
)

type S时间 struct {
}

// 13位时间戳  32位系统则是10位
func (S时间) QX取现行_时间戳() (时间戳 int) {
	系统位 := strconv.IntSize
	if 系统位 == 32 {
		时间戳 = int(time.Now().Unix())
	} else {
		时间戳 = int(time.Now().UnixMilli())
	}

	return
}
func (S时间) QX取现行_时间戳_纳秒级() (时间戳 int) {
	时间戳 = int(time.Now().UnixNano())
	return
}

func (S时间) QX取现行_时间() (时间 time.Time) {
	时间 = time.Now()
	return
}

func (S时间) D到文本(时间 time.Time) (时间文本 string) {
	时间文本 = 时间.Format("2006-01-02 15:04:05")
	return
}

func (S时间) C创建时间(年, 月, 日, 时, 分, 秒, 毫秒 int) (返回值 time.Time) {
	返回值 = time.Date(年, time.Month(月), 日, 时, 分, 秒, 毫秒, time.Local)
	return
}

func (S时间) C重文本载入(时间文本 string) (时间 time.Time) {
	时间 = 全_类型.D到时间(时间文本)
	return
}

func (S时间) C重时间戳载入(时间戳 any) (时间 time.Time) {
	结果, _ := strconv.ParseInt(any_到文本(时间戳), 0, 64)
	时间 = time.Unix(结果, 0)
	return
}

// 13位 32位系统则是10位
func (S时间) D到时间_戳(时间 time.Time) (时间戳 int) {
	系统位 := strconv.IntSize
	if 系统位 == 32 {
		时间戳 = int(时间.Unix())
	} else {
		时间戳 = int(时间.UnixMilli())
	}

	return
}

func (S时间) QN取年(时间 time.Time) (返回值 int) {
	返回值 = 时间.Year()
	return
}
func (S时间) QY取月(时间 time.Time) (返回值 int) {
	返回值 = int(时间.Month())
	return
}
func (S时间) QR取日(时间 time.Time) (返回值 int) {
	返回值 = 时间.Day()
	return
}
func (S时间) QX取小时(时间 time.Time) (返回值 int) {
	返回值 = 时间.Hour()
	return
}
func (S时间) QF取分(时间 time.Time) (返回值 int) {
	返回值 = 时间.Minute()
	return
}
func (S时间) QM取秒(时间 time.Time) (返回值 int) {
	返回值 = 时间.Second()
	return
}
func (S时间) QX取星期几(时间 time.Time) (返回值 int) {
	返回值 = int(时间.Weekday())
	return
}
func (S时间) QZ取周(时间 time.Time) (返回值 int) {
	_, 返回值 = 时间.ISOWeek()
	return
}

func (S时间) QD取当年_第几天(时间 time.Time) (返回值 int) {
	返回值 = 时间.YearDay()
	return
}

// 让程序延时执行 再这里等待时间到达收 继续执行 单位 毫秒
func (S时间) YC延迟程序(延迟毫秒数 int) (返回值 int) {
	time.Sleep(time.Duration(延迟毫秒数) * time.Millisecond)
	return
}

func (S时间) QB取北京时间() (北京时间 time.Time, 返回_错误 error) {
	url := "https://www.baidu.com/"
	resp, err := http.Get(url)
	if err != nil {
		返回_错误 = err
		return
	}
	defer resp.Body.Close()
	北京时间 = 全_类型.D到时间(resp.Header.Get("date"), time.RFC1123)
	北京时间 = 北京时间.Add(time.Hour * 8)
	return
}

// 正负=增减 为0时 不变
func (S时间) ZJ增减时间(时间 time.Time, 年, 月, 日, 时, 分, 秒 int) (返回时间 time.Time) {
	if 年 != 0 || 月 != 0 || 日 != 0 {
		返回时间 = 时间.AddDate(年, 月, 日)
	} else {
		返回时间 = 时间
	}
	if 时 != 0 || 分 != 0 || 秒 != 0 {
		返回时间 = 返回时间.Add(time.Hour*time.Duration(时) + time.Minute*time.Duration(分) + time.Second*time.Duration(秒))
	}
	return
}

// @ 返回结果文本 ">"  "<" "="
func (S时间) B比较大小(时间1, 时间2 time.Time) string {
	if 时间1.Before(时间2) {
		return "<"
	} else if 时间1.After(时间2) {
		return ">"
	} else {
		return "="
	}
}
